package kr.hkit.powerjava.chapter24.work3.service;

import java.util.Scanner;

import kr.hkit.powerjava.chapter24.work3.dao.InterfaceDao;

public abstract class ServiceItem<T> {
	protected InterfaceDao<T> dao;
	protected Scanner sc;
	
	public ServiceItem(InterfaceDao<T> dao, Scanner sc){
		this.dao = dao;
		this.sc = sc;
		init();
	}
	
	protected void init(){
		dao.loadFile();
		prnMenu();
	}
	

	protected void close(){
		dao.saveFile();
	}
	
	public void prnMenu(){
		T item = null;
		int res;
		do {
			System.out
					.print("1. 입력\n2. 삭제\n3. 수정\n4. 검색\n5. 리스트보기\n6. 종료");
			res = sc.nextInt();
			switch (res) {
				case 1:
					// 학생정보입력
					item = inputItemInfo(true); // 학번, 성명, 국,영,수
					dao.insertItem(item);
					break;
				case 2:
					// 1)리스트 출력 2)학생 번호 입력
					dao.prnItemList(null);
					System.out.println("삭제할 정보를 입력하시오.");
					item = inputItemInfo(false);
					dao.deleteItem(item);
					break;
				case 3:
					// 1)리스트 출력 3)수정할 정보 입력
					dao.prnItemList(null);
					item = inputItemInfo(true);
					dao.updateItem(item);
					break;
				case 4:
					item = inputItemInfo(false); // 학번, 성명
					try {
						item = dao.searchItem(item);
						System.out.println(item);
					} catch(ArrayIndexOutOfBoundsException e) {
						System.out.println("정보 없음");
					}
					break;
				case 5:
					prnSubMenu();
					break;
				default:
					dao.saveFile();
					res = 6;
			}
		} while (res != 6);
	}
	
	public abstract T inputItemInfo(boolean gubun);
	public abstract void prnSubMenu();
	
}
